package com.ly.base.chapter02.CCCCurrying;

/**
 * 柯里化
 *
 * 1、什么是柯里化?
 *      让接收多个参数的函数换成一系列接收一个参数的函数。
 *  2、如何实现柯里化？
 *      结合闭包实现。
 *  3、柯里化的作用？
 *      让函数分步执行。
 */
public class CarryingDemo1 {

    @FunctionalInterface
    interface F2{
        int op(int a,int b);
    }

    @FunctionalInterface
    interface Fa{
        Fb op(int a);
    }

    @FunctionalInterface
    interface Fb{
        int op(int b);
    }

    public static void main(String[] args) {
        F2 f2 = (a,b) -> a + b;
        System.out.println(f2.op(10,20));


        /**改造
         *
         *     (a) -> 返回另一个函数对象
         *              (b) -> a+b
         */
        Fa fa = (a) -> (b) ->a+b;
        System.out.println(fa.op(10).op(40));


    }

}
